﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Collections;

namespace Data.Database
{
    public class Paciente
    {
        static private String cadenaConexion = ConfigurationManager.ConnectionStrings["Turnet"].ConnectionString; // @"Data Source=|DataDirectory|\BBDD.sdf";
        static private String nombreTabla = "Paciente";



        public bool ExistePaciente(string dni)
        {
            DataSet dsPaciente = new DataSet();
            SqlDataAdapter daPaciente;
            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                string consulta = "Select * from Paciente where dni = '" + dni + "'";
                daPaciente = new SqlDataAdapter(consulta, conexion);
                daPaciente.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daPaciente.Fill(dsPaciente, "Paciente");
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            if (dsPaciente.Tables["Paciente"].Rows.Count > 0)
                return true;
            else
                return false;
        }

        public DataSet ObtenerTablaPaciente()//string todo)
        {
            DataSet dsPaciente = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
               
                {
                    String consulta = "Select * FROM Paciente";
                    SqlDataAdapter daCliente = new SqlDataAdapter(consulta, conexion);
                    daCliente.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                    daCliente.Fill(dsPaciente, nombreTabla); //dsPersonal es ahora nuestra base de datos local
                }


            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return dsPaciente;
        }

        public void AnyadirPaciente(DataSet paciente)
        {
            DataSet dsPaciente = new DataSet();
            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select * from Paciente";
                SqlDataAdapter daPaciente = new SqlDataAdapter(consulta, conexion);
                daPaciente.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daPaciente.Fill(dsPaciente, nombreTabla); //nombre de tabla esta declarado arriba del todo y sera "Personal"
                SqlCommandBuilder cbuilder = new SqlCommandBuilder(daPaciente);
                daPaciente.Update(paciente, "Paciente");

            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }

        public DataSet ObtenerDatosPacienteConDni(string dni)
        {
            DataSet dsPaciente = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "SELECT * FROM Paciente WHERE DNI='" + dni + "'";
                SqlDataAdapter daPaciente = new SqlDataAdapter(consulta, conexion);
                daPaciente.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daPaciente.Fill(dsPaciente, nombreTabla);
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return dsPaciente;
        }

        public void EditarPaciente(DataSet paciente)
        {
            DataSet dsPaciente = new DataSet();
            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select * from Paciente where DNI='" + paciente.Tables["Paciente"].Rows[0][1] + "'";
                SqlDataAdapter daCliente = new SqlDataAdapter(consulta, conexion);
                daCliente.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daCliente.Fill(dsPaciente, nombreTabla);
                SqlCommandBuilder cbuilder = new SqlCommandBuilder(daCliente);
                daCliente.Update(paciente, "Paciente");

            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }

        public DataSet ConseguirProvincias()
        {
            DataSet dsProvin = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select *  FROM provincia";
                SqlDataAdapter daProv = new SqlDataAdapter(consulta, conexion);
                daProv.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daProv.Fill(dsProvin, "provincia"); //dsPersonal es ahora nuestra base de datos local
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return dsProvin;
        }



        public DataSet ConseguirCiudades(string prov)
        {
            DataSet dsCiu = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select * FROM ciudad where Id_Provincia ='" + prov + "' order by NombreCiudad";
                SqlDataAdapter daCiu = new SqlDataAdapter(consulta, conexion);
                daCiu.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daCiu.Fill(dsCiu, "ciudad"); //dsPersonal es ahora nuestra base de datos local
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return dsCiu;
        }




        public DataSet ConseguirCiudades()
        {
            throw new NotImplementedException();
        }

        public DataSet ConseguirObraSocial()
        {
            DataSet dsObras = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select *  FROM ObraSocial";
                SqlDataAdapter daObras = new SqlDataAdapter(consulta, conexion);
                daObras.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daObras.Fill(dsObras, "ObraSocial"); //dsObra es ahora nuestra base de datos local
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return dsObras;
        }



        public DataSet ConseguirPacientesConNombreApellido(string concatenado)
        {
            DataSet dspac = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select id_paciente,(apellido+ '  ' + nombre+ ' - ' + dni) as concatenado FROM paciente WHERE (apellido+ '  ' + nombre+ ' - ' + dni) = '" + concatenado + "' ";
                SqlDataAdapter daPac = new SqlDataAdapter(consulta, conexion);
                daPac.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daPac.Fill(dspac, "Paciente");
            }
            catch (Exception ex)
            {
                throw (ex);
            }


            return dspac;
        }


        public DataSet ConseguirPacientes()
        {
            DataSet dspac = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select id_paciente,(apellido+ '  ' + nombre+ ' - ' + dni) as concatenado FROM paciente ";
                SqlDataAdapter daPac = new SqlDataAdapter(consulta, conexion);
                daPac.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daPac.Fill(dspac, "Paciente");
            }
            catch (Exception ex)
            {
                throw (ex);
            }


            return dspac;
        }
    
    
    
    }

}

